// 知识点1：命名空间内部的名字查找规则也是由内到外，使用点之前的名字才会被考虑到

// 知识点2：限定名以相反的次序指出被查找的作用域

// 知识点3：当我们给函数传递一个类类型的对象时，出了在常规的作用域中查找，还查找实参所属类型的命名空间，这对于传递类的引用和指针同样有效（非常重要）

// 知识点4：若一个作用域中类的友元只在这一处声明，且该函数接受该类作为参数，则根据知识点3，可以被找到，否则只有在其他地方有声明才可能被找到

// 答案：当参数为string时，会先在string类中查找swap函数，找到则不使用std版本的。若未int类型，则直接使用标准库版本的swap
